<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原型继承</title>
</head>
<body>
    <!-- 
        当前只介绍了原型继承（主要还是使用原型继承），还有很多方法，可以做个了解
        原型链继承有个问题，当多个构造函数继承了同一个对象，在一个构造函数的原型上添加东西会造成其他对象身上的原型也发生改变（因为他们
        指向的是同一块空间）
        解决：通过构造函数，每次 new 都是一个新对象

        ☆ 原型继承的核心
             子类的原型 =  new 父类
        后面的react一般使用class来继承
     -->

     <script>
        // 抽取公共部分
        // const Person = { // 使用这种方法，如果多个继承，他们的空间会指向同一块地址，我们可以通过构造函数解决
        //     eays:2,
        //     head:1
        // }

        function Person() {
            this.esys = 2
            this.head = 1
        }

        // 构造函数 想要继承 Person
        function Woman(){
            
        }
        console.log('🚀 ~ This is a result of console.log ~ ✨: ', Woman.prototype.baby );

        // 通过原型来继承 Person
        Woman.prototype = new Person()
        // 因为constructor指向改变，所以需要重新指向原构造函数
        Woman.prototype.constructor = Woman
        const red = new Woman()
        console.log(red);
        // 给女人一个方法
        Woman.prototype.baby = function(){
            console.log("宝贝");
            return "宝贝"
        }
        console.log('ee', red.baby());



        function Man() {

        }
        const man = new Man()
        Man.prototype.ok = () => {}
        
        Man.prototype = new Person()
        Man.prototype.constructor = Man
        console.log(man);
        const newMan = new Man()
        console.log('🚀 ~ This is a result of console.log ~ ✨: ', 
            newMan
        );
     </script>
</body>
</html>
